import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.ListIterator;
import java.util.Vector;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 * Hier wordt de rekening van de klant geselecteerd na het inloggen
 * @author Jeroen
 *
 */
public class SelectRekeningGUI extends JFrame implements ActionListener{

	private static final long serialVersionUID = 1L;
	private Bank bank;
	private Klant klant;
	private int pWidth = 600, pHeight = 600;
	private Vector<Integer> rekeningenVanKlant;
	
	private JComboBox list;
	
	public SelectRekeningGUI(Bank b, Klant k){
		bank = b;
		klant =k;
		Container c = getContentPane();
		c.setLayout(new FlowLayout());
		
		rekeningenVanKlant = new Vector<Integer>();
		Vector v = b.alleRekeningen();
		for ( ListIterator i = v.listIterator() ; i.hasNext() ; ){
			Rekening r = (Rekening) i.next();
			if (r.getRekeningHouder().equals(klant)){
				rekeningenVanKlant.add(new Integer(r.getRekNr()));
			}
		}
		
		/**
		 * Check of een klant meerdere rekeningen heeft.
		 * Zo JComboBox presenteren anders skippen naar hoofdmenu
		 */
		int size = rekeningenVanKlant.size();
		if (size == 1){
			int rekeningNr = (Integer) rekeningenVanKlant.get(0);
			HashMap hm = bank.vanRekeningNrNaarRekening();
			
			new MenuGUI(bank, (Rekening) hm.get(new Integer(rekeningNr)));
			dispose();
		}else{
			list = new JComboBox(rekeningenVanKlant);
			c.add(new JLabel("Kies je rekening:"));
			c.add(list);
			list.addActionListener(this);
			setSize(pWidth, pHeight);
			setTitle("Bankapplicatie");
		    setVisible(true);
		    setDefaultCloseOperation(EXIT_ON_CLOSE);
		}
	}

	public void actionPerformed(ActionEvent arg0) {
		int nr = list.getSelectedIndex();
		int rekeningNr = (Integer) rekeningenVanKlant.get(nr);
		HashMap hm = bank.vanRekeningNrNaarRekening();
		
		new MenuGUI(bank, (Rekening) hm.get(new Integer(rekeningNr)));
		dispose();
	}
}
